home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 2000 October / Software of the Month - Ultimate Collection Shareware 277.iso / pc / PROGRAMS / UTILITY / WINLINUX / DATA1.CAB / programs_-_include / ASM-I386 / I82489.H < prev    next >
C/C++ Source or Header  |  1999-09-17  |  3KB  |  104 lines

  1. #ifndef __ASM_I82489_H
  2. #define __ASM_I82489_H
  3.  
  4. /*
  5.  *    Offsets for programming the 82489 and Pentium integrated APIC
  6.  *
  7.  *    Alan Cox <Alan.Cox@linux.org>, 1995.
  8.  */
  9. #define        APIC_PHYS_BASE    0xfee00000 /* IA s/w dev Vol 3, Section 7.4 */
  10.  
  11. #define        APIC_ID        0x20
  12. #define            GET_APIC_ID(x)        (((x)>>24)&0x0F)
  13. #define        APIC_VERSION    0x30
  14. #define        APIC_TASKPRI    0x80
  15. #define            APIC_TPRI_MASK        0xFF
  16. #define        APIC_ARBPRI    0x90
  17. #define            APIC_ARBPRI_MASK    0xFF
  18. #define        APIC_PROCPRI    0xA0
  19. #define        APIC_EOI    0xB0
  20. #define            APIC_EIO_ACK        0x0        /* Write this to the EOI register */
  21. #define        APIC_RRR    0xC0
  22. #define        APIC_LDR    0xD0
  23. #define            APIC_LDR_MASK        (0xFF<<24)
  24. #define            GET_APIC_LOGICAL_ID(x)    (((x)>>24)&0xFF)
  25. #define            SET_APIC_LOGICAL_ID(x)    (((x)<<24))
  26. #define        APIC_DFR    0xE0
  27. #define            GET_APIC_DFR(x)        (((x)>>28)&0x0F)
  28. #define            SET_APIC_DFR(x)        ((x)<<28)
  29. #define        APIC_SPIV    0xF0
  30. #define        APIC_ISR    0x100
  31. #define        APIC_TMR    0x180
  32. #define     APIC_IRR    0x200
  33. #define     APIC_ESR    0x280
  34. #define            APIC_ESR_SEND_CS    0x00001
  35. #define            APIC_ESR_RECV_CS    0x00002
  36. #define            APIC_ESR_SEND_ACC    0x00004
  37. #define            APIC_ESR_RECV_ACC    0x00008
  38. #define            APIC_ESR_SENDILL    0x00020
  39. #define            APIC_ESR_RECVILL    0x00040
  40. #define            APIC_ESR_ILLREGA    0x00080
  41. #define        APIC_ICR    0x300
  42. #define            APIC_DEST_SELF        0x40000
  43. #define            APIC_DEST_ALLINC    0x80000
  44. #define            APIC_DEST_ALLBUT    0xC0000
  45. #define            APIC_DEST_RR_MASK    0x30000
  46. #define            APIC_DEST_RR_INVALID    0x00000
  47. #define            APIC_DEST_RR_INPROG    0x10000
  48. #define            APIC_DEST_RR_VALID    0x20000
  49. #define            APIC_DEST_LEVELTRIG    0x08000
  50. #define            APIC_DEST_ASSERT    0x04000
  51. #define            APIC_DEST_BUSY        0x01000
  52. #define            APIC_DEST_LOGICAL    0x00800
  53. #define            APIC_DEST_DM_FIXED    0x00000
  54. #define            APIC_DEST_DM_LOWEST    0x00100
  55. #define            APIC_DEST_DM_SMI    0x00200
  56. #define            APIC_DEST_DM_REMRD    0x00300
  57. #define            APIC_DEST_DM_NMI    0x00400
  58. #define            APIC_DEST_DM_INIT    0x00500
  59. #define            APIC_DEST_DM_STARTUP    0x00600
  60. #define            APIC_DEST_VECTOR_MASK    0x000FF
  61. #define        APIC_ICR2    0x310
  62. #define            GET_APIC_DEST_FIELD(x)    (((x)>>24)&0xFF)
  63. #define            SET_APIC_DEST_FIELD(x)    ((x)<<24)
  64. #define        APIC_LVTT    0x320
  65. #define        APIC_LVT0    0x350
  66. #define            APIC_LVT_TIMER_PERIODIC        (1<<17)
  67. #define            APIC_LVT_MASKED            (1<<16)
  68. #define            APIC_LVT_LEVEL_TRIGGER        (1<<15)
  69. #define            APIC_LVT_REMOTE_IRR        (1<<14)
  70. #define            APIC_INPUT_POLARITY        (1<<13)
  71. #define            APIC_SEND_PENDING        (1<<12)
  72. #define            GET_APIC_DELIVERY_MODE(x)    (((x)>>8)&0x7)
  73. #define            SET_APIC_DELIVERY_MODE(x,y)    (((x)&~0x700)|((y)<<8))
  74. #define                APIC_MODE_FIXED        0x0
  75. #define                APIC_MODE_NMI        0x4
  76. #define                APIC_MODE_EXINT        0x7
  77. #define     APIC_LVT1    0x360
  78. #define        APIC_LVERR    0x370
  79. #define        APIC_TMICT    0x380
  80. #define        APIC_TMCCT    0x390
  81. #define        APIC_TDCR    0x3E0
  82. #define            APIC_TDR_DIV_1        0xB
  83. #define            APIC_TDR_DIV_2        0x0
  84. #define            APIC_TDR_DIV_4        0x1
  85. #define            APIC_TDR_DIV_8        0x2
  86. #define            APIC_TDR_DIV_16        0x3
  87. #define            APIC_TDR_DIV_32        0x8
  88. #define            APIC_TDR_DIV_64        0x9
  89. #define            APIC_TDR_DIV_128    0xA
  90.  
  91. #define APIC_BASE (fix_to_virt(FIX_APIC_BASE))
  92.  
  93. extern __inline void apic_write(unsigned long reg, unsigned long v)
  94. {
  95.     *((volatile unsigned long *)(APIC_BASE+reg))=v;
  96. }
  97.  
  98. extern __inline unsigned long apic_read(unsigned long reg)
  99. {
  100.     return *((volatile unsigned long *)(APIC_BASE+reg));
  101. }
  102.  
  103. #endif
  104.